home *** CD-ROM | disk | FTP | other *** search
/ 17 Bit Software 6: Level 6 / 17 Bit - Level 6 (1998)(Epic Marketing)[!].iso / !applications! / crmv1.91t / crm.doc < prev    next >
Text File  |  1993-02-03  |  63KB  |  1,615 lines

  1. Document Crunch-Mania V1.91 User's Guide
  2.  
  3.                          Crunch-Mania User's Guide
  4.  
  5.                  Registered / Test Version 1.91 - 11.02.94
  6.  
  7.  
  8.  
  9.                          Written by Thomas Schwarz
  10.  
  11.                   Copyright (c) 1991-94 by Thomas Schwarz
  12.                             All rights reserved
  13.  
  14.  
  15. 1. Introduction
  16. ================
  17.  
  18.  
  19. 1.1. Copyright & Registration
  20. ------------------------------
  21.  
  22.     Crunch-Mania  is  Copyright  (c)  1989-94  by  Thomas  Schwarz.  It was
  23.  released  under  the  concept of "Shareware".  All versions until V1.6 are
  24.  Public Domain, but starting with V1.7 they are Shareware.  I have released
  25.  a  test  version  that  may  be spread to give you a hint on the program's
  26.  abilities.   If,  after  a  testing  period  of  some weeks, you find this
  27.  program  useful,  please  register.   By cooperating with this concept you
  28.  help to ensure continued development of this product.
  29.  
  30.     Registered   Users   will   receive   the  latest  release  version  of
  31.  Crunch-Mania,  a  faster library, the latest version of RTDD, includes and
  32.  autodocs  for  the  CrM.library  and  separate  decrunch  sourcecodes  (in
  33.  Assembler).    The   registered   version  has  no  annoying  registration
  34.  requesters  and  has  some  more  features  which  are ghosted in the test
  35.  version.
  36.  
  37.     No  person(s)  or  businesses  other  than the author are authorized to
  38.  accept  any  registration  or  distribution  fees  in any form whatsoever,
  39.  except as specified by the author.  Only people who have sent US 20, DM 30
  40.  or  more  to  the  following address will be regarded as registered users.
  41.  Only these two currencies and only bank-notes will be accepted.
  42.  
  43.                               Thomas Schwarz
  44.                               Dammstrasse 12
  45.                             70806 Kornwestheim
  46.                                  Germany
  47.  
  48.     Just  put  the  money  in an envelope together with some piece of paper
  49.  with  your  request  and your address on it or print out the orderform and
  50.  then post it to me.
  51.  
  52.     Delivery  may  take  two to eight weeks.  Usually you will be sent your
  53.  registered  version  right  away,  but  if a new version is imminent to be
  54.  completed, you will get that one as soon as it becomes available.
  55.  
  56.     I  am  still  searching  for somebody or a company who distributes this
  57.  program  as a commercial product, so I can spend my time in developing new
  58.  features and not in pasting stamps on envelopes.  So be free to contact me
  59.  to relieve my pain!
  60.  
  61.     The  reqtools.library this program uses starting with V1.8 is copyright
  62.  1991/1992 by Nico François.  That's what I call cool!
  63.  
  64.  
  65. 1.2. Distribution
  66. ------------------
  67.  
  68.     Basically,  the  test version of Crunch-Mania may be distributed freely
  69.  as long as the following conditions are met:
  70.  
  71.     The  Distributor may only charge a fee up to the costs of obtaining any
  72.  common  public  domain  disk.  The distributor agrees to stop distributing
  73.  the  programs and data involved on request of the author.  The distributor
  74.  may  only  distribute an unmodified copy of the original program, with all
  75.  the supplied documentation and copyright notices left intact.
  76.  
  77.  
  78. 1.3. Support
  79. -------------
  80.  
  81.     If  you  have any suggestions, bug reports or questions, please contact
  82.  the author at the above address.
  83.  
  84.     When   sending   bug   reports,  please  describe  exactly  under  what
  85.  circumstances  the bug occured, what equipment was used and what happened.
  86.  If  possible  also try to give me enough information to reproduce the bug.
  87.  It  is  very  difficult  to  find  bugs  when  you don't know exactly what
  88.  happened.   Please  don't  just  send  messages like "my machine sometimes
  89.  crashes  when  I  try  to  load  xxx",  that  really  doesn't help me.  If
  90.  possible,  submit  the offending file in crunched and original state to me
  91.  so I can test it myself, or give me a pointer where I can find the files.
  92.  
  93.  
  94. 1.4. License
  95. -------------
  96.  
  97.  1.   This  license  applies to the product called "Crunch-Mania", a set of
  98.  programs  for  the  Commodore-Amiga  computer, published by Thomas Schwarz
  99.  under  the  concepts  of  ShareWare,  and  the accompanying documentation,
  100.  example files and anything else that comes with the original distribution.
  101.  The  terms  "Programs",  "Crunch-Mania"  and  "CrM"  below,  refer to this
  102.  product.  The licensee is addressed as "you".
  103.  
  104.  2.   You  may  copy  and  distribute  verbatim  copies  of  the  programs'
  105.  executable  code  and  documentation  as  you  receive  it, in any medium,
  106.  provided  that  you  conspicuously  and  appropriately  publish  only  the
  107.  original,  unmodified programs, with all copyright notices and disclaimers
  108.  of  warranty  intact  and  including  all  the accompanying documentation,
  109.  example files and anything else that came with the original.
  110.  
  111.  3.   You  may  not  copy  and/or  distribute  these  programs  without the
  112.  accompanying  documentation  and other additional files that came with the
  113.  original.   You  may not copy and/or distribute modified versions of these
  114.  programs.
  115.  
  116.  4.   You  may  not  copy,  modify,  sublicense, distribute or transfer the
  117.  programs  except  as  expressly  provided under this license.  Any attempt
  118.  otherwise to copy, modify, sublicense, distribute or transfer the programs
  119.  is  void, and will automatically terminate your rights to use the programs
  120.  under  this license.  However, parties who have received copies, or rights
  121.  to  use  copies,  from you under this license will not have their licenses
  122.  terminated so long as such parties remain in full compliance.
  123.  
  124.  5.   By  copying, distributing and/or using the programs you indicate your
  125.  acceptance of this license to do so, and all its terms and conditions.
  126.  
  127.  6.   Each  time you redistribute the programs, the recipient automatically
  128.  receives  a  license from the original licensor to copy, distribute and/or
  129.  use  the  programs  subject  to  these  terms and conditions.  You may not
  130.  impose  any further restrictions on the recipients' exercise of the rights
  131.  granted herein.
  132.  
  133.  7.   You  may  not  disassemble, decompile, re-source or otherwise reverse
  134.  engineer the programs.
  135.  
  136.  8.   You  may  use  the programs for a period of up to 30 days for testing
  137.  purposes.  After that, you have to register.
  138.  
  139.  9.   If you wish to incorporate parts of the programs into other programs,
  140.  write to the author to ask for permission.
  141.  
  142.  10.   You  agree  to  cease distributing the programs and data involved if
  143.  requested to do so by author.
  144.  
  145.  11.   You  may  charge  a  fee to recover distribution costs.  The fee for
  146.  diskette  distribution  may not be more than the cost to obtain any common
  147.  public domain disk.
  148.  
  149.  12.   Only  the test version is intended to be distributed, the registered
  150.  version may only be used by registered users and nobody else.
  151.  
  152.  
  153. 1.5. Disclaimer
  154. ----------------
  155.  
  156.     THERE  IS  NO  WARRANTY  FOR  THE  PROGRAMS, TO THE EXTENT PERMITTED BY
  157.  APPLICABLE  LAW.   EXCEPT  WHEN  OTHERWISE STATED IN WRITING THE COPYRIGHT
  158.  HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAMS "AS IS" WITHOUT WARRANTY
  159.  OF  ANY  KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
  160.  THE  IMPLIED  WARRANTIES  OF  MERCHANTABILITY AND FITNESS FOR A PARTICULAR
  161.  PURPOSE.   THE  ENTIRE  RISK  AS  TO  THE  QUALITY  AND PERFORMANCE OF THE
  162.  PROGRAMS IS WITH YOU.  SHOULD THE PROGRAMS PROVE DEFECTIVE, YOU ASSUME THE
  163.  COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
  164.  
  165.     IN  NO  EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
  166.  WILL  ANY  COPYRIGHT  HOLDER,  OR ANY OTHER PARTY WHO MAY REDISTRIBUTE THE
  167.  PROGRAMS  AS  PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
  168.  GENERAL,  SPECIAL,  INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
  169.  USE OR INABILITY TO USE THE PROGRAMS (INCLUDING BUT NOT LIMITED TO LOSS OF
  170.  DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
  171.  PARTIES  OR A FAILURE OF THE PROGRAMS TO OPERATE WITH ANY OTHER PROGRAMS),
  172.  EVEN  IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
  173.  SUCH DAMAGES.
  174.  
  175.  
  176. 1.6. Future Plans
  177. ------------------
  178.  
  179.     The  program  is planned to be a real multi-talent.  So a disk archiver
  180.  and  a files archiver will be added as soon as I have any spare time.  But
  181.  my  special  attention will be given to the development of faster and more
  182.  effective  algorithms.   Another  goal  is to adapt the GUI to Commodore's
  183.  styleguide rules.
  184.  
  185.     If  you  register and support my program, you will speed up the release
  186.  of  new  and  better  versions.  If there is little demand I may drop this
  187.  project and start coding something else and that would be a great pity.
  188.  
  189.  
  190. 1.7. Why buy the registered Version?
  191. -------------------------------------
  192.  
  193.     Well,  first  of  all you should buy the registered version, if you use
  194.  this  program  for  a  longer  time.  With a registration you will support
  195.  future  releases.   The registered version is faster both in crunching and
  196.  in  decrunching.  With the registered version you can decrunch reloc files
  197.  and  not  only  data files.  Registered users get the latest version of my
  198.  run-time-data-decruncher  (RTDD)  which is very useful e.g.  for crunching
  199.  icons or include files, they will be automatically decrunched.  The source
  200.  code  of  the  decruncher  is  also provided to be implemented in your own
  201.  releases.  Registered users receive a library that crunches and decrunches
  202.  faster.   A  registered  user gets the latest version of this product plus
  203.  the next version as soon as it gets available!  A program worth using is a
  204.  program worth buying!
  205.  
  206.  
  207.  
  208. 2. General Information
  209. =======================
  210.  
  211.  
  212. 2.1. Outward Appearance
  213. ------------------------
  214.  
  215.     The  program  opens a 2 planes intuition screen which is *NOT* a public
  216.  screen.  It uses the intuition.library for full multitasking compatiblity,
  217.  the  gadtools.library for nicer gadgets and menus and the reqtools.library
  218.  ((c)  Nico  Francois) for nice requesters.  It is self-detaching so you do
  219.  not  need  to  call it with "run".  You can either run it from CLI or from
  220.  the Workbench.
  221.  
  222.     The  program  is  controlled  by  gadgets and menus.  On the right side
  223.  there  is an area for tables and error messages and at the bottom there is
  224.  a  statusline  combined with a percentage display which indicates what the
  225.  program is just doing.
  226.  
  227.  
  228. 2.2. Numbers Input & Output
  229. ----------------------------
  230.  
  231.  Input:
  232.     You can enter hex and decimal numbers, but hexadecimal numbers are only
  233.  recognized  with  a leading "$".  To get negative numbers put a "-" at the
  234.  beginning  of the line.  An empty gadget has the same effect as one with a
  235.  zero, sometimes this also means that you want to disable this option, e.g.
  236.  an empty "Stack At"-gadget means that you don't want to set the stack to a
  237.  special  address.   Some  extra functions can be reached by entering chars
  238.  instead of numbers.
  239.  
  240.  Output:
  241.     The  output  follows  the  same  rules as the input:  a "$" indicates a
  242.  hexadecimal  number,  the  rest  is  decimal.  But there is one exception:
  243.  while  loading  executables  in  the  Address-  or  Link-Mode the dehunker
  244.  displays  hexadecimal  numbers  without  a leading "$".  This has not been
  245.  forgotten but left out as a result of lack of space.
  246.  
  247.  
  248. 2.3. System Requirements
  249. -------------------------
  250.  
  251.     For  packing  small  files 512KB may suffice but the full power of this
  252.  program  can  only  be  obtained  with  at least 1MB memory resulting from
  253.  200-400KB  of  tables  depending  on  the  version, the crunchmode and the
  254.  offset.   Two  drives are comfortable but not necessary.  No problems have
  255.  occured  under  Kickstart  1.2,  2.0 and 3.0, so it should also work under
  256.  1.3, 2.x and 3.x+.
  257.  
  258.  
  259. 2.4. Other Information
  260. -----------------------
  261.  
  262.     There  are  no known bugs.  Nevertheless the author is in no way liable
  263.  for  any  errors and gurus invoked by the Program.  In most cases the user
  264.  himself produces the errors by misusing the Program.
  265.  
  266.     This  document will only deal with the important things.  Understanding
  267.  minor details like Filelen is expected.  These things are left out.
  268.  
  269.  
  270. 2.5. A Word on the Keys
  271. ------------------------
  272.  
  273.      You  may  invoke  actions by pressing special keys.  These actions are
  274.  the  same  as  the corresponding gadgets would cause.  The key that stands
  275.  for a certain gadget is underlined in the text next to or in the gadget.
  276.  
  277.      When  pressing a key, the gadget behaves as if you had used the mouse,
  278.  i.e.  it looks like being pressed down.  In this state no actions have yet
  279.  happened,  you may cancel your choice by pressing one of the <Shift> keys.
  280.  Otherwise  the  action will be performed as supposed.  Only one key at the
  281.  same time is regarded as pressed, keys that are pressed while an other key
  282.  is still pressed will be ignored.
  283.  
  284.  
  285.  
  286. 3. CLI-Options, Menus & Gadgets
  287. ================================
  288.  
  289.  
  290. 3.1. Command Line Options
  291. --------------------------
  292.  
  293.     Here  is  a list of all options and parameters available and adjustable
  294.  via  the  CLI.   The  same  options  can be used in the configuration file
  295.  "S:CrM.cfg".   This  file is processed before the command line, so you can
  296.  change  your defaults via the CLI.  A "+" instead of a "-" in front of the
  297.  option reverses the result.
  298.  
  299.  
  300. 3.1.1. <?>  - CLI Help
  301. -----------------------
  302.  
  303.     This  option  lists  all currently available options in the CLI to give
  304.  you  a  brief  overview  of  what you can do there and then asks for a new
  305.  command  line.  This option has to be the first in the command line and no
  306.  other options may be specified with it.
  307.  
  308.  EXAMPLE
  309.  
  310.  1> CrM ?
  311.  
  312.  Crunch-Mania V1.9r - Copyright (c) 1991-93 Thomas Schwarz
  313.  
  314.  Command Line Options:
  315.         .
  316.         :
  317.  
  318.  Enter Command Line:
  319.  
  320.  (Well, with <Esc>-codes this looks a bit nicer)
  321.  
  322.  
  323. 3.1.2. <-c> - Set Screen Colors
  324. --------------------------------
  325.  
  326.     With  this option followed by four hexadecimal numbers you can set your
  327.  own  personally  preferred  screen colors fitting your needs.  The highest
  328.  nibble of each number stands for the red part of the color, the mid nibble
  329.  for the green part and the lowest nibble for the blue part.
  330.  
  331.  EXAMPLES
  332.  
  333.  1> CrM -c$889 $2 $ccd $358                ;These are the default colors.
  334.  or
  335.  1> CrM -c$0 $bbb $2a2 $137
  336.  
  337.  
  338. 3.1.3. <-d> - Enable Auto Makedir
  339. ----------------------------------
  340.  
  341.     This  option comes into effect when you crunch whole directories or use
  342.  the  multiselect  feature  of  the  filerequester and you select a subdir.
  343.  When this option is active this dir will be automatically created when CrM
  344.  tries to access a file located in this dir, otherwise there will appear an
  345.  information  requester.   When  you  deny  this requester the whole dir is
  346.  skipped.
  347.  
  348.  EXAMPLES
  349.  
  350.  1> CrM +d                              ;lets a requester appear
  351.  
  352.  
  353. 3.1.4. <-e> - Set Extra Mem Size
  354. ---------------------------------
  355.  
  356.     As  this  program does not support floating compression, the source and
  357.  destination  memory blocks overlap to reduce the memory needed.  Extra Mem
  358.  specifies the distance between the two blocks.
  359.  
  360.     The  error message "File not crunchable!!!" indicates that the cruncher
  361.  would  have  overwritten  some  data which has not yet been processed with
  362.  crunched  data.   Nevertheless you can crunch those files by setting extra
  363.  mem  to  a higher value, but the files usually then become longer than the
  364.  original.
  365.  
  366.     Extra  Mem  may be set by the option <-e> directly followed by a number
  367.  in the range from 100 to 10000.  Default is 100.
  368.  
  369.  EXAMPLES
  370.  
  371.  1> CrM -e100                           ; Sets Extra Mem to 100
  372.  or
  373.  1> CrM -e$200                          ; Sets Exrta Mem to 512
  374.  
  375.  
  376. 3.1.5. <-f> - Enable LED-Flash
  377. -------------------------------
  378.  
  379.      While  packing the power-LED flashes to show the user that the program
  380.  is working.  As you certainly know, the power-LED also steers the low-pass
  381.  filter  for  the  four audio channels.  This may lead to an annoying sound
  382.  when listening to a tune while crunching.  To prevent this you can disable
  383.  the flickering with the option <+f>, default is on.
  384.  
  385.  EXAMPLE
  386.  
  387.  1> CrM -f                    ;Enable LED-Flash (default)
  388.  
  389.  
  390. 3.1.6. <-g> - Enable Segment-BPTRs
  391. -----------------------------------
  392.  
  393.     This  option  only  comes  into  effect  in the address and link modes.
  394.  There  you  can relocate executable to a certain address.  The dos.library
  395.  does the same but it adds the lenght of a hunk and the pointer to the next
  396.  hunk  in memory to all hunks.  Normally this is only for internal DOS use,
  397.  but  some  programs  use  these  BPTRs to calculate the addresses of their
  398.  hunks.   You  can  enable  the  creation of BPTRs with this option so that
  399.  these  programs  don't crash any more.  As you don't need this option very
  400.  often the default setting is off.
  401.  
  402.  EXAMPLE
  403.  
  404.  1> CrM -g            ;now BPTRs are created
  405.  
  406.  
  407. 3.1.7. <-h> - Set Huffman Buffer Size
  408. --------------------------------------
  409.  
  410.     This  option  can  be  used  to  set the size of the buffer used in the
  411.  LZ-Huffman  compression  mode for collecting statistics.  The size of this
  412.  buffer  affects the compression ratio in unpredictable ways.  As a general
  413.  rule, keep this at the default, but if you are compressing homogenous data
  414.  with  an  approximately  fixed  relative  frequency  of symbols (like text
  415.  files),  setting this to a large value will improve compression.  Binaries
  416.  generally compress best with the default setting.
  417.  
  418.     The  Huffman  buffer  may be of any size between 4K and 64K and must be
  419.  specified immediately following the <-h> string, in kilobytes.
  420.  
  421.  EXAMPLE
  422.  
  423.  1> CrM -h32                 ;Sets the Huffman buffer size to 32768 (32K)
  424.                              ;bytes
  425.  
  426.  The default Huffman buffer size is 16K.
  427.  
  428.  
  429. 3.1.8. <-i> - Set Subdir-Level
  430. -------------------------------
  431.  
  432.     CrM  takes  care  of  this  option  when  you  want to crunch an entire
  433.  directory  or  use the multiselect feature of the filerequester and select
  434.  dirs.   This  number  specifies the level upto which the dirs are scanned.
  435.  The  number  follows  immediately  after  the  "-i", see examples for more
  436.  details.  Accepted values range from "-1" to "127".
  437.  
  438.     Let's  say  you  want  to  crunch the whole ramdisk and let's say yours
  439.  looks  like  mine  below.  If you specify "-1" as number the whole ramdisk
  440.  will  be  compressed.   If  you  enter "0" only "dirlist" will be crunched
  441.  because  it  is  the  only  file in the rootdir.  When you take "1" as the
  442.  number   CrM  will  crunch  "dirlist"  and  the  files  "ASM-One.Pref"  to
  443.  "ZOOMOPTS"  in the env directory.  Taking "2" as number will have the same
  444.  effect as "-1" (in this example case).
  445.  
  446.  RAM DISK:
  447.       ENV (dir)
  448.            GadToolsBox (dir)
  449.              GadToolsBox.prefs
  450.            egs (dir)
  451.              mouse.prefs
  452.            Sys (dir)
  453.              floppy.prefs                     font.prefs
  454.              icontrol.prefs                   input.prefs
  455.              locale.prefs                     overscan.prefs
  456.              palette.ilbm                     pointer.ilbm
  457.              printer.prefs                    printergfx.prefs
  458.              printerps.prefs                  screenmode.prefs
  459.              serial.prefs                     sound.prefs
  460.              sysfont.prefs                    wb.pat
  461.              wbconfig.prefs                   wbfont.prefs
  462.              win.pat
  463.         ASM-One.Pref                     NEWLIST_LANG
  464.         TERMPATH                         xprascii
  465.         xprzspeed                        ZedZapWindow
  466.         ZOOMOPTS
  467.       Clipboards (dir)
  468.       T (dir)
  469.    dirlist
  470.  
  471.  EXAMPLES
  472.  
  473.  1> CrM -i-1                  ;take whole directory
  474.  
  475.  1> CrM -i1                   ;crunch sourcedir and the files of the dirs
  476.                               ;in it
  477.  
  478.  Default is -1 (scan entire directory).
  479.  
  480.  
  481. 3.1.9. <-I> - Ignore Configfile
  482. --------------------------------
  483.  
  484.     In the configuration file "S:CrM.cfg" you may specify your own personal
  485.  default  settings  which  are  loaded  immediately  after the start of the
  486.  program.   This  option prevents CrM from loading the config file what may
  487.  come  in  handy  when you don't have your boot disk inserted.  This option
  488.  has to be the first in the command line but others may also be set there.
  489.  
  490.  EXAMPLE
  491.  
  492.  1> CrM -I +r       ;don't load config file and don't load reqtools.library
  493.  
  494.  1> CrM -I          ;don't load config file and use internal defaults
  495.                     ;instead
  496.  
  497.  
  498. 3.1.10. <-p> - Set Taskpriority
  499. --------------------------------
  500.  
  501.     This  value  sets  the  taskpriority  of  the  background task which is
  502.  responsible  for  loading,  crunching  and  saving.  The task handling the
  503.  windows,  menus and gadgets always has a higher priority so that it is not
  504.  frozen  while  crunching.   Nevertheless  you  have to select the priority
  505.  wisely  because  high  priorities  will interfere multitasking which makes
  506.  this machine so powerful!  This value ranges from "-128" to "126".
  507.  
  508.  EXAMPLE
  509.  
  510.  1> CrM -p-5                            ;Set Pri to -5
  511.  
  512.  Default is -1.
  513.  
  514.  
  515. 3.1.11. <-r> - Enable reqtools.library
  516. ---------------------------------------
  517.  
  518.     The  reqtools.library  is  loaded  by  default  and  is  used  for user
  519.  communication.   When  you  are  short  of memory you may prevent CrM from
  520.  loading it with the option <+r>.
  521.  
  522.     The  reqtools.library  is  copyright  Nico  Fracois.   It  is  used for
  523.  filerequesters,   numberrequesters  and  informationrequesters.   CrM  can
  524.  operate without this library, but it is more comfortable to use it.
  525.  
  526.  1> CrM +r            ;don't open reqtools.library
  527.  
  528.  
  529. 3.1.12. <-s> - Enable Sample Encoding
  530. --------------------------------------
  531.  
  532.     This  feature  is  especially  designed  for compressing 8-Bit samples.
  533.  Generally  this  option will only reduce the crunched size with samples as
  534.  this  algorithm  is  comparable  with delta-encryption.  It calculates the
  535.  relative difference between two bytes instead of the absolute values.  Now
  536.  imagine  a sine wave.  The difference between two bytes is in the range of
  537.  -4  to  +4,  but  the absolute values go from -128 to +127.  The algorithm
  538.  will  convert  the file into one with about 20 different values instead of
  539.  256.
  540.  
  541.     To  give  you  a hint on the efficiency of this algorithm I have put up
  542.  the  following  chart.   The  files are standard 31 Instruments Protracker
  543.  modules taken from the "Mayday Attack Vol.  II" packed with the LZ-Huffman
  544.  compression algorithm.  The proportional numbers reflect the saved bytes.
  545.  
  546.    Name                   | Original | Sample-Mode=Off |  Sample-Mode=On
  547.    -----------------------+----------+-----------------+----------------
  548.    mod.acid_yell          |   230764 | 19.7%    185338 | 27.0%    168350
  549.    mod.badada             |   112742 | 35.1%     73196 | 41.2%     66338
  550.    mod.flatliner          |   140886 | 29.3%     96648 | 47.8%     73612
  551.    mod.fuck_you!          |   142652 | 24.8%    107238 | 33.3%     95202
  552.    mod.gotta_speed        |   108594 | 21.4%     85338 | 33.7%     71992
  553.    mod.hard_attack        |   108100 | 47.0%     57260 | 54.6%     49118
  554.    mod.leck_mich_am_arsch |   125486 | 39.0%     76528 | 46.3%     67338
  555.    mod.something_big      |   162756 | 19.5%    131092 | 27.2%    118556
  556.    mod.world_of_terror    |   102114 | 48.2%     52932 | 51.8%     49174
  557.    mod.you_gotta_believe  |    85092 | 24.7%     64084 | 26.6%     62490
  558.    -----------------------+----------+-----------------+----------------
  559.    Total                  |  1319186 | 29.5%    929654 | 37.7%    822170
  560.  
  561.  EXAMPLE
  562.  
  563.  1> CrM -m        ;Enable Sample Encoding
  564.  
  565.  Default is off, as most files compress worse with it.
  566.  
  567.  
  568. 3.1.13. <-t> - Set Textbuffersize
  569. ----------------------------------
  570.  
  571.     This  value  specifies  the  size  of  the history buffer in lines.  On
  572.  Kick1.2/1.3   this   value   is   fixed  to  18,  as  my  version  of  the
  573.  gadtools13.library  always  crashed when I tried to scroll the outputfield
  574.  whith the slider next to it.  You may enter values from "18" to "999".
  575.  
  576.  EXAMPLE
  577.  
  578.  1> CrM -t200                           ;Set history size to 200 lines
  579.  
  580.  Default is 100.
  581.  
  582.  
  583. 3.1.14. <-u> - Enable Free Mem Updating
  584. ----------------------------------------
  585.  
  586.     The  title  bar  of  the  screen  or  the window displays the currently
  587.  available  unused memory.  This display is updated every 1/10 second.  You
  588.  can  disable  this  with  <+u> to gain a bit more speed, but it's not very
  589.  much.
  590.  
  591.  EXAMPLE
  592.  
  593.  1> CrM +u                    ;no updating
  594.  
  595.  
  596. 3.1.15. <-y> - Enable Data Encryption
  597. --------------------------------------
  598.  
  599.     Starting  with  CrM  V1.9  you have the possiblity to encrypt your data
  600.  with  a  password.   You have to enter this password when the crunching is
  601.  finished.   You  will see only spaces in the requester, therefore you have
  602.  to  enter  it  twice  to  be  sure  that  you  have  entered it correctly.
  603.  Currently  this  only works in the Data-Mode, in all other modes the state
  604.  of this flag is ignored.
  605.  
  606.  EXAPMLE
  607.  
  608.  1> CrM -y                              ;Enable pw encryption
  609.  
  610.  Default is off.
  611.  
  612.  
  613. 3.2. Menu Options
  614. ------------------
  615.  
  616.     In the following lines the functions of the menus are described.  Menus
  617.  are accessible via the right mousebutton.
  618.  
  619.  
  620. 3.2.1. Project Menu
  621. --------------------
  622.  
  623.     In  this  menu  the basic operations have found their place.  They have
  624.  the  same  effect  as  the corresponding gadgets, just for people who like
  625.  menus  more  than  gadgets.   For  "About"  and  "Save  Prefs" there is no
  626.  corresponding gadget.
  627.  
  628.  
  629. 3.2.2. About     - <a>
  630. -----------------------
  631.  
  632.     This  will  display  the text that is shown when you start the program.
  633.  When the reqtools.library is active a requester is called instead.  In the
  634.  registered version this requester also displays the user's address.
  635.  
  636.  
  637. 3.2.3. Load File - <l>
  638. -----------------------
  639.  
  640.     Load a File, has the same function as Load gadget, see `Load'.
  641.  
  642.  
  643. 3.2.4. Crunch    - <c>
  644. -----------------------
  645.  
  646.     Crunch  the  loaded  data,  has the same function as Crunch gadget, see
  647.  `Crunch'.
  648.  
  649.  
  650. 3.2.5. Save File - <s>
  651. -----------------------
  652.  
  653.     Save a File, has the same function as Save gadget, see `Save'.
  654.  
  655.  
  656. 3.2.6. Save Prefs
  657. ------------------
  658.  
  659.     This  function  has  no  equivalent gadget.  It creates the config file
  660.  "S:CrM.cfg" and saves the current status of the menus to it.  You may edit
  661.  the  created  file  with  any texteditor for the prefs are saved as normal
  662.  ASCII-text.
  663.  
  664.  
  665. 3.2.7. Iconify   - <i>
  666. -----------------------
  667.  
  668.     Close  screen  and  window  and  open  a  small window on the workbench
  669.  screen, same effect as Iconify Gadget, see `Iconify'.
  670.  
  671.  
  672. 3.2.8. Quit      - <Q>
  673. -----------------------
  674.  
  675.     Leave Crunch-Mania, same as Quit gadet, see `Quit'.
  676.  
  677.  NOTE:  you have to press <Shift> when using the keyboard shortcut.
  678.  
  679.  
  680. 3.2.10. Options Menu
  681. ---------------------
  682.  
  683.     This  menu contains several preferences and values that are used in the
  684.  program.  There are no corresponding gadgets, so you have to use the menu.
  685.  Some options are disabled when the the reqtools.library is not active.
  686.  
  687.  
  688. 3.2.11. Free Mem Update
  689. ------------------------
  690.  
  691.     See `<-u> - Enable Free Mem Updating' for details.  Default is on.
  692.  
  693.  
  694. 3.2.12. reqtools.library
  695. -------------------------
  696.  
  697.     See `<-r> - Enable reqtools.library' for details.  Default is on.
  698.  
  699.  
  700. 3.2.13. Segment-Ptrs
  701. ---------------------
  702.  
  703.     Consult `<-g> - Enable Segment-BPTRs' for more information.  Default is
  704.  off.
  705.  
  706.  
  707. 3.2.14. LED-Flash
  708. ------------------
  709.  
  710.     See `<-f> - Enable LED-Flash' for further information.  Default is on.
  711.  
  712.  
  713. 3.2.15. Sample-Mode
  714. --------------------
  715.  
  716.     See `<-s> - Enable Sample Encoding' for more details.  Default is off.
  717.  
  718.  
  719. 3.2.16. Encrypt Data
  720. ---------------------
  721.  
  722.     See `<-y> - Enable Data Encryption' for datails.  Default is off.
  723.  
  724.  
  725. 3.2.17. Auto Makedir
  726. ---------------------
  727.  
  728.     See `<-d> - Enable Auto Makedir' for details.  Default is on.
  729.  
  730.  
  731. 3.2.18. Priority
  732. -----------------
  733.  
  734.     Here  you  can  set the task priority of Crunch-Mania.  There are three
  735.  given possibilities (-3, 0, 3) the custom option The current task priority
  736.  is  shown  behind  the double point.  Select your priority wisely, because
  737.  high  priorities  will  interfere multitasking, and that's what makes this
  738.  machine  so powerful!  See `<-p> - Set Taskpriority' for more information.
  739.  Default is -1.
  740.  
  741.  
  742. 3.2.19. Include Subdirs
  743. ------------------------
  744.  
  745.     Here  you can set the rekursion depth for scanning dirs.  There are two
  746.  predefined  possibilities,  "All Subdirs" which equals -1 and "No Subdirs"
  747.  meaning 0, and the Set Level option where you can set any level between -1
  748.  and 128.  See `<-i> - Set Subdir-Level' for more details.  Default is -1.
  749.  
  750.  
  751. 3.2.20. Extra Mem
  752. ------------------
  753.  
  754.     See   `<-e> - Set Extra Mem Size'  for  a  detailed  description.   The
  755.  current  value  is  shown  after  the  double point.  You may change it by
  756.  selecting the menu item.  The new value will be used when the next file is
  757.  loaded.  Default is 100.
  758.  
  759.  
  760. 3.2.21. Huffman-Buf
  761. --------------------
  762.  
  763.     See `<-h> - Set Huffman Buffer Size' for more details.  Default size is
  764.  16K.
  765.  
  766.  
  767. 3.2.22. Text Buffer
  768. --------------------
  769.  
  770.     See  `<-t> - Set Textbuffersize' for more details.  Default size is 100
  771.  lines.
  772.  
  773.  
  774.  
  775. 3.3. Gadgets
  776. -------------
  777.  
  778.     Most   gadgets  behave  as  you  expect  it.   Only  the  mode  gadgets
  779.  (Reloc/Data/  Address/Link)  are  a  bit special.  You can only change the
  780.  mode  when the buffer is empty.  To empty the buffer you have to press the
  781.  abort gadget.
  782.  
  783.  
  784. 3.3.1. Quit
  785. ------------
  786.  
  787.     Uuh,  I  forgot  the function of this gadget.  Well, I think you should
  788.  not  use  it,  cause  it's the end of everything.  It's the most senseless
  789.  gadget  of all.  Anyway, when pressing it a requester is invoked where you
  790.  have to confirm your choice.
  791.  
  792.  
  793. 3.3.2. Abort
  794. -------------
  795.  
  796.     Generally  you  need  this gadget only to stop crunching.  But you also
  797.  have  to  press  this button when you e.g.  loaded something in reloc mode
  798.  and now want to load something in data mode.  You will experience that you
  799.  can't  do  this  unless  you  press  this  gadget.  You may not change the
  800.  crunchmode when something is loaded because then the decrunchers would not
  801.  fit.  By pressing this gadget you unlock that feature.
  802.  
  803.  
  804. 3.3.3. Iconify
  805. ---------------
  806.  
  807.     This  closes  the  main  screen  and  opens  a  new small window on the
  808.  workbench  screen.   The  new window displays the togo-counter, so you can
  809.  crunch something and see when it has finished.  You may return to the main
  810.  screen by pressing the right mousebutton when the window is active.
  811.  
  812.  
  813. 3.3.4. Crunchmode
  814. ------------------
  815.  
  816.     Here  you  may select between the four crunchmodes.  These are:  Reloc,
  817.  Data,  Address,  Link.   There  is  also  an  "Auto" Checkbox.  When it is
  818.  selected CrM automatically detects whether a file is executable or not and
  819.  changes the Crunchmode accordingly.  This is only for registered users.
  820.  
  821.     In the reloc mode you can load any executable except overlayed files (I
  822.  think  there  are  not  too  many).   The  hunk  structure is analysed and
  823.  displayed  while loading.  Name, Symbol and Debug hunks are skipped, Reloc
  824.  hunks  are  sorted  and  precompensated.   This  new reloc table format is
  825.  shorter and even better crunchable than the one DOS uses!
  826.  
  827.     The  data mode was designed for normal not-executable data files.  They
  828.  are  loaded  into  memory,  compressed  and  then  saved with a small data
  829.  header.  The small comment which is also saved is for RTDD which takes the
  830.  original  len  out  of  it  without opening the file resulting in a faster
  831.  access when reading the dir.
  832.  
  833.     The address mode is a bit similar to the ByteKiller cruncher.  Here you
  834.  can   load   executables   and   fix  them  to  a  special  address,  load
  835.  position-depentant  code or just load pure data.  The decruncher then puts
  836.  this  data  to  a  specified  memory  block  and  jumps  somewhere.   This
  837.  crunchmode  is  not very DOS-friendly (especially the decruncher) but very
  838.  handy e.g.  for bootloading games.  The dehunker displays some hexadecimal
  839.  numbers without a leading "$", so don't get confused.
  840.  
  841.     The  link  mode resembles tetrapack/defpack.  In this mode you can load
  842.  several executable and data files into a precleared memory block which you
  843.  have  to  define  first.   Executables  are relocated to certain addresses
  844.  inside  the  block,  data  files are loaded to a specified position in the
  845.  block.
  846.  
  847.     I  recomend  to  use the last two modes only with proggies which do not
  848.  return  to  the CLI because important system-parameters and -tables may be
  849.  destroyed.
  850.  
  851.     When the Auto checkbox is checked CrM behaves in an itelligent way.  It
  852.  detects  whether  the  loaded  file is executable or not, and then decides
  853.  which mode (reloc or data) is the right one.
  854.  
  855.  
  856. 3.3.5. LowMem & HighMem
  857. ------------------------
  858.  
  859.     These  two  gadgets  are only available in link mode.  They specify the
  860.  memory  block  to  which  the  files  are  loaded.  This block is buffered
  861.  someplace else in memory while loading and crunching, so you don't have to
  862.  care about crashes.  LowMem and HighMem both have to be even addresses and
  863.  HighMem  has  to  be  higher  than  LowMem.   It is recommended to set the
  864.  "Decrunch to" address to LowMem to avoid unwanted results.
  865.  
  866.  
  867. 3.3.6. Load|Fix File to
  868. ------------------------
  869.  
  870.     These two gadgets are active in the address and link mode.  The "Load /
  871.  Fix"  gadget  determines  whether  an  executable is loaded as a data file
  872.  (Load)  or  relocated  to  the address given in the string gadget below it
  873.  (Fix).   For  data  files this cycle gadget has no effect.  In the address
  874.  mode  the string gadget is only important for executables, it contains the
  875.  address  where  to fix them to.  In the link mode this gadget affects both
  876.  executable and data files in the same way:  with the address in the gadget
  877.  an  offset to the beginning of the memory block is calculated and the file
  878.  is  then loaded there.  The file has to fit completely in the given memory
  879.  block.
  880.  
  881.  
  882. 3.3.7. Load
  883. ------------
  884.  
  885.     With  the "Load" gadget you may load files in all modes.  When there is
  886.  no filename given in the string gadget next to it, or when the filename in
  887.  the  string  gadget  has  not  been  changed  since  the  last  loading, a
  888.  reqtools.library  filerequester  apppears  (when enabled).  After pressing
  889.  "Load" and then selecting a file the program immediatly begins to load the
  890.  file.  You may select more that one file and even dirs by holding down the
  891.  <Shift> key.  Then you will be asked for a destination dir.
  892.  
  893.     With  the  DIR  gadget  next  to  the  load  filename  you may select a
  894.  directory  to crunch.  Now the whole directory will be packed, subdirs may
  895.  be included or not, this depends on the Include Subdirs Level (see chapter
  896.  3.1  for  details).   You  may  activate  the  string  gadget  by pressing
  897.  <Return>.
  898.  
  899.     When  loading  an  executable  its  hunk  structure is displayed in the
  900.  output  field  either  with  decimal  numbers  (reloc) or with hexadecimal
  901.  numbers  (adress  and  link),  where  Range  is  the  part the entire hunk
  902.  occupies  and  Len  is  the  length  of  the actual data in the hunk.  The
  903.  filelength  is  shown  below the load string gadget.  "Processed Len" only
  904.  appears  in  the Reloc mode in the display field and shows the size of the
  905.  stripped and precompressed data.  This is the len of the data the cruncher
  906.  really crunches.
  907.  
  908.     When you load a file that has been crunched in reloc or in data mode it
  909.  is  automatically  decrunched presuming you selected the right mode (reloc
  910.  for  executable  files  and data for data files) so you can recrunch it or
  911.  save  the original file.  After it has been decrunched the file is treated
  912.  as if you had loaded it in its original form.
  913.  
  914.  
  915. 3.3.8. Algorithm
  916. -----------------
  917.  
  918.     This  is  again  a  rotating  gadget.   You may select beween these two
  919.  crunch algorithms:  LZ-Huffman and CrM-Normal.
  920.  
  921.     LZ-Huffman is the best of these algorithms, but not the fastest.  Files
  922.  crunched  in  this  mode need 1248 bytes of additional memory to decrunch.
  923.  The  decruncher  is  also  slightly  slower than the one of the CrM-Normal
  924.  mode.  To crunch files in this mode you need continuous memory blocks with
  925.  the sizes:
  926.     128K
  927.   + 5*Crunchoffset
  928.   + Huffman Buffer
  929.  With  the default values of $7ffe and 16K this will lead to a memory usage
  930.  of 304K.
  931.  
  932.     The advantage of the CrM-Normal mode is its fast decruncher and its low
  933.  memory  usage.   But  its  results  are  the worst of the two modes partly
  934.  caused  by  the  Crunchoffset  which  is  limited  to  $4200.  It needs no
  935.  additional  memory  to decrunch.  The memory used while crunching is shown
  936.  in the following table:
  937.     128K
  938.   + 5*Crunchoffset
  939.  With the default Crunchoffset of $4200 this will lead to a memory usage of
  940.  210K.
  941.  
  942.  
  943. 3.3.9. Offset
  944. --------------
  945.  
  946.     This  value specifies the range in which redundant data is searched and
  947.  eliminated.   Higher  values produce better results but also longer crunch
  948.  times.   Values range from 1 to $4200 in the CrM-Normal mode and from 1 to
  949.  $7ffe  in  the  LZH mode.  Values which are too high will be automatically
  950.  reduced to the maximum.
  951.  
  952.  
  953. 3.3.10. Crunch
  954. ---------------
  955.  
  956.     Now  you  have  started  the  real crunching process.  This will take a
  957.  while, so be patient.  The ToGo counter is displayed in the status line at
  958.  the  bottom.   It  shows  how  much data has not yet been processed.  This
  959.  counter  is  permanently  updated and is also shown in the Iconify window.
  960.  When  finished  the  crunched  len of the file is displayed above the save
  961.  string  gadget.   This  is  not  the final length!  The decruncher or data
  962.  header is not yet added.
  963.  
  964.     The  error  "File  not  crunchable!" indicates that there is not enough
  965.  space  between the original and the crunched data.  You may increase Extra
  966.  Mem  to  avoid  this message, but generally these files become longer when
  967.  crunched.
  968.  
  969.     The  message  "Min  Security-Distance"  shows  the distance between the
  970.  source  and destination memory block which is needed to decrunch a file in
  971.  the  same  memory block properly.  The crunched data has to be in front of
  972.  the  decrunched  data.  For more information have a look at the decruncher
  973.  source.
  974.  
  975.  
  976. 3.3.11. Decruncher
  977. -------------------
  978.  
  979.     With  this  gadget  you  can  select  the  decruncher  you  want.  Each
  980.  crunchmode  has  a  special  set of decrunchers.  Not all gadgets that are
  981.  displayed  are  also needed for the selected decruncher.  So be careful to
  982.  select the right decruncher especially in the address and link mode.
  983.  
  984.     First  of all there is the data mode.  As it is really senseless to put
  985.  a  decruncher before a data file there is only the data option.  This will
  986.  save  a  14  bytes  data  header  in  front  of  the encoded data which is
  987.  necessary  for  decrunch.   This  header  is  described  in the decruncher
  988.  source.  This decruncher does not any other input.
  989.  
  990.     Then  there  is  the  reloc  mode.  If you choose the simple decruncher
  991.  (it's  the shortest one with implemented decruncher) you have a pretty low
  992.  level  decruncher.   When  a  crunched  program  is running, twice as much
  993.  memory is used as needed.  The decruncher doesn't free the needless memory
  994.  but lets this do the dos.library after the whole program has done its job.
  995.  You  can  only  use  this  decruncher  in  combination with the CrM-Normal
  996.  algorithm.  This decruncher takes no input from other gadgets.
  997.  
  998.     The  decruncher  you should use is the normal decruncher.  It frees the
  999.  unnecessary  memory  before  running  the  program.   Here  you can choose
  1000.  whether  to  kill  the decruncher or not.  Killing it will result in a bit
  1001.  more  free memory, a longer decruncher and the cli_module in pr_CLI in the
  1002.  process  structure  pointing on the first hunk of the program (normally it
  1003.  points  on the decruncher).  Some programs need this (e.g.  CygnusEd).  As
  1004.  you  might  have guessed this decruncher pays attention to the "Kill Decr"
  1005.  gadget.
  1006.  
  1007.     The  latest  decruncher  is the library decruncher.  It is the shortest
  1008.  one,  but  you need the CrM.library to run a program with that decruncher.
  1009.  With  this  decruncher  you  should  have  no problems with the cli_module
  1010.  pointer.  You can use this decruncher to crunch libraries, fonts, devices,
  1011.  handlers  (careful  with  the  last  two,  crunch  them only with Kick2.0+
  1012.  because  DOS  uses  an  internal  jumptable  that  cannot  be  patched  in
  1013.  Kick1.2/1.3).  This decruncher is independent of any gadgets.
  1014.  
  1015.     The  address  and  link  modes  have the same decrunchers.  Normally it
  1016.  suffices to use the normal decruncher.  You can tell him where to decrunch
  1017.  the  data  and  where  to jump.  When you use the LZ-Huffman algorithm you
  1018.  also  have  to  supply  a value to the "LZH-Table at" gadget, because this
  1019.  decruncher  needs  some  memory  for a 1248 bytes large table to build the
  1020.  huffman tree.
  1021.  
  1022.     The  professional  decruncher  has  some more options.  You can set the
  1023.  stack  as well as locate the decruncher somewhere in memory.  You may stop
  1024.  the  drives,  set  the  status  register  and init some important hardware
  1025.  registers  or  addresses.   You may let out some options by clearing their
  1026.  gadget.   This  packer  saves  only  the really necessary parts and not an
  1027.  ultimate  decuncher  where only some values are changed and much senseless
  1028.  code is dragged along.
  1029.  
  1030.     Finally you can save the files as data files.  This has the same effect
  1031.  as just loading them in data mode.
  1032.  
  1033.  
  1034. 3.3.12. Decrunch to
  1035. --------------------
  1036.  
  1037.     The  "Decrunch  To"-address  specifies  the  address  where the data is
  1038.  decrunched  to.   By  entering  here  a  "p"  no special address is taken.
  1039.  Instead  of  this some mem is allocated (in the Hunk-Header) and there the
  1040.  data  will  be  decrunched to.  "c" has almost the same effect but here it
  1041.  will be in Chip-Mem (e.g.  for proggies with internal copperlist).
  1042.  
  1043.  
  1044. 3.3.13. Jump to
  1045. ----------------
  1046.  
  1047.     "Jump  to"  is  the  address  where  the  decruncher will jump to after
  1048.  decrunching.    In   most   cases   this   is  the  same  address  as  the
  1049.  Decrunch-address.   If  there is a "p" or "c" as the Decrunch-Address, the
  1050.  Jump-Address is relative to the beginning of the data.  By entering here a
  1051.  "r" the decruncher will return to the calling code after decrunching.
  1052.  
  1053.  
  1054. 3.3.14. Stack at
  1055. -----------------
  1056.  
  1057.     This  gadget specifies where the stack should be put.  The Stackaddress
  1058.  is written into a7 (stackpointer) as the first action before decrunching.
  1059.  
  1060.  
  1061. 3.3.15. Decruncher at
  1062. ----------------------
  1063.  
  1064.     The  decruncher  can  copy  itself to a safe position which is fixed by
  1065.  "Decruncher at".  Of course this is done before decrunching.
  1066.  
  1067.  
  1068. 3.3.16. Stop Drives
  1069. --------------------
  1070.  
  1071.     You   may   stop  all  floppies  either  before  decrunching  or  after
  1072.  decrunching  (or  both).   The  left column is responsible for all actions
  1073.  before  decrunching  and  the right one for after.  Stopping drives "lame"
  1074.  will  switch off the motor but not the drive LED (at least it does so with
  1075.  my external drive).  To turn it out you have to select "pro".
  1076.  
  1077.  
  1078. 3.3.17. SR (Status Reg)
  1079. ------------------------
  1080.  
  1081.     The  value  given  in  this  gadget  is  written in the status register
  1082.  immediately before the program is entered.  You may also enter values with
  1083.  the  supervisor bit set (e.g.  $2700), the status register is set with the
  1084.  help  of  trap #0.  This may cause some troubles with accelerated machines
  1085.  when the vbr is not at address 0.
  1086.  
  1087.  
  1088. 3.3.18. Move Gadgets
  1089. ---------------------
  1090.  
  1091.     These  are  the  twenty  gadgets placed in five rows with two times two
  1092.  columns  each.   They  are  designed  to  write  certain values to special
  1093.  addresses  outa  the data range.  In the first column there are the values
  1094.  which can be wordened with a following ".w" (e.g.  $0.w) and in the second
  1095.  one  there are the addresses which are automatically shortened if possible
  1096.  (like  in  Ass:   e.g.   move.w  #0,$dff180).   The  first two columns are
  1097.  executed  before  decrunching  and  the  second  two after.  E.g.  you can
  1098.  change the background color before decrunching to red and when decrunching
  1099.  has finished to black.  Or you can turn off all interrupts and DMAs.
  1100.  
  1101.  EXAMPLES
  1102.  
  1103.  1) move  "$0.w     " , "$dff180  "            ;set colour0 to black
  1104.     move  "$f00.w   " , "$dff182  "            ;set colour1 to red
  1105.  
  1106.  You can also combine the above two lines into a single one:
  1107.  
  1108.     move  "$f00     " , "$dff180  "            ;set colour0/1 to back/red
  1109.  
  1110.  2) move  "$60000   " , "$6c      "            ;set level 3 interrupt to
  1111.                                                ;$60000
  1112.  3) move  "$7fff.w  " , "$dff09a  "            ;disable all interrupts
  1113.  
  1114.  
  1115. 3.3.19. Save
  1116. -------------
  1117.  
  1118.     The  save filerequester and filename follow the same rules as described
  1119.  in 3.3.7.  The save directory may be different to the load directory.  You
  1120.  can  save  the original file before pressing the crunch button or save the
  1121.  crunched file after crunching it.  NOTE:  decrunched executables are never
  1122.  totally  equal  to  their  original  state, because some useless hunks are
  1123.  removed,  reloc tables are sorted and Hunk_Ends are added.  The final file
  1124.  lenght is displayed above the save string gadget.
  1125.  
  1126.     When pressing the DIR gadget next to the save filename you may select a
  1127.  destination  directory  for  multiple  selected  files and for crunching a
  1128.  whole directory.  While crunching you can select a new save filename (Save
  1129.  gadget is ghosted).
  1130.  
  1131.  
  1132. 3.3.20. LZH-Table At
  1133. ---------------------
  1134.  
  1135.     This  gadget  determines where the LZH-Decruncher locates the tables it
  1136.  needs  to  decrunch the data.  This gadget is only in the address and link
  1137.  modes  important  when  you the LZ-Huffman crunch algorithm.  The table is
  1138.  1248 bytes large, so it won't be too hard to find some space for it.
  1139.  
  1140.  
  1141. 3.3.21. Advanced Options
  1142. -------------------------
  1143.  
  1144.     This  gadget opens and closes the Advanced Options window.  It contains
  1145.  the  "Move" gadgets and "Stop Drives" gadgets.  Compared to older versions
  1146.  it looks more jovial this way.
  1147.  
  1148.  
  1149. 3.3.22. Slider Bar
  1150. -------------------
  1151.  
  1152.     The Slider Bar may be used to scroll the output field.  When the slider
  1153.  bar  is at the bottom each text that is printed out will cause the display
  1154.  to  scroll  up, if it is somewhere in the middle, the display will stay at
  1155.  it's  place  but  the slider bar will scroll instead.  When the slider bar
  1156.  reaches  the  top, the display will scroll again.  This way you can reread
  1157.  something that was previously printed without being disturbed.
  1158.  
  1159.  
  1160.  
  1161. 4. Supplied Utilities
  1162. ======================
  1163.  
  1164.     This  section describes the utilities which have to do with this packer
  1165.  and which are supplied with this package.
  1166.  
  1167.  
  1168. 4.1. Run-time Data-Decruncher (RTDD)
  1169. -------------------------------------
  1170.  
  1171.     This  utility  is  very  powerful and useful.  It patches some (6 or 9)
  1172.  vectors  of  the dos.library, so any loaded datafile will be automatically
  1173.  decrunched.   When  the  file  is  loaded entirely no extra mem is needed,
  1174.  otherwise the program will allocate a memoryblock as large as the original
  1175.  file  and  will  decrunch  it there.  In all further read calls the wanted
  1176.  data  is  only  copied  from  this  buffer,  so  this  will  also speed up
  1177.  disk-access.   In  the  current  version  (v1.9)  RTDD supports all crunch
  1178.  algorithms  (CrM!,  CrM2),  any  Min  Security-Len,  the  sample-mode  and
  1179.  password  encrypted data.  In combination with the CrM.library you will be
  1180.  able  to  crunch  almost  EVERY  file without realizing anything (except a
  1181.  little slow-down).
  1182.  
  1183.  The following entries of the dos.library are patched:
  1184.  - Open()
  1185.  - Close()
  1186.  - Read()
  1187.  - Seek()
  1188.  - Examine()
  1189.  - ExNext()
  1190.  When you are running Kick2.0+ these are also patched:
  1191.  - ExAll()
  1192.  - ExamineFH()
  1193.  - OpenFromLock()
  1194.  
  1195.  RTDD also supports some command line options:
  1196.  "?" ··· This will display a help page.
  1197.  "-i" ·· Install Only, DON'T remove RTDD. Useful for scripts.
  1198.  "-r" ·· Remove Only, DON'T install RTDD. Useful for scripts.
  1199.  When  no options are given RTDD assumes that you want to change it's state
  1200.  from installed to removed or vice versa.
  1201.  
  1202.  You CANNOT run RTDD from the workbench!
  1203.  
  1204.  There  have  occured  some  strange effects when using RTDD in combination
  1205.  with Directory Opus.  I will try to fix this in future versions.
  1206.  
  1207.  
  1208.  RTDD V2.0
  1209.  ----------
  1210.  RTDD  2.0  has the same task as RTDD 1.9, but there is a major difference:
  1211.  it  is  a commodity.  CLI options and icon tooltypes are the same and they
  1212.  will be explained together now.
  1213.  
  1214.  CX_PRIORITY - Specifies the priority RTDD has among other commodities.
  1215.                NOTE: This is NOT the task priority!
  1216.  CX_POPKEY   - Specifies the combination of keys which will let RTDD's
  1217.                window appear.
  1218.  CX_POPUP    - Specifies whether RTDD's window will popup when RTDD is
  1219.                started.
  1220.  PATCH       - Tells RTDD whether or not to patch the system.
  1221.  CACHE       - Function not yet implemented
  1222.  MAXMEM      - Function not yet implemented
  1223.  
  1224.  EXAMPLE:
  1225.  1> RTDD CX_PRIORITY=0 CX_POPKEY="ctrl alt d" CX_POPUP=NO PATCH=YES
  1226.          CACHE=NO MAXMEM=524288
  1227.  
  1228.  The  "Active"  menu  was  designed for a very special case.  Let's say you
  1229.  have  installed  RTDD and you want to remove it (for whatever reason), but
  1230.  you  can't remove it, because another program has also patched the vectors
  1231.  that RTDD uses.  With the old version there was no way to get rid of RTDD,
  1232.  but  by  turning  off  the  "Active"  menu  you  may prevent RTDD now from
  1233.  decrunching data while the patches are still installed.
  1234.  
  1235.  
  1236. 4.2. The CrM.library
  1237. ---------------------
  1238.  
  1239.     This  program  has  the option to save crunched execuatables which will
  1240.  use  the CrM.library to decrunch.  Furthermore this library can be used by
  1241.  any  programmer  to decrunch data files easily.  Each registered user will
  1242.  get  the  includes  and  autodocs of the library and may use it in his own
  1243.  productions.  Registered users also get a faster version of the library.
  1244.  
  1245.     Starting  with  release  1.9  (v4) the library also includes the crunch
  1246.  algorithms,  so  any programmer can use the library to crunch his (or her)
  1247.  own  data.   CrM  will  also  use  the  library.  Consult the autodocs for
  1248.  further information how to program it.
  1249.  
  1250.     The  library  supports Sample encoded and password encoded files.  When
  1251.  you  want  to  decrunch  a  password  crunched  file the library sets up a
  1252.  reqtools requester where you can enter the password.  The entered password
  1253.  is  saved  in a list so you don't have to enter the password all the time.
  1254.  When  you  enter  the  same  password  twice  you  may  remove  it (or all
  1255.  passwords) from the list.
  1256.  
  1257.  
  1258. 4.3. The xpkCRM2.library
  1259. -------------------------
  1260.  
  1261.     This  library  is  an  xpk  interface for the CrM.library.  It uses the
  1262.  crunch  and  decrunch  routines  of  the  LZ-Huffman  mode the CrM.library
  1263.  provides.  It behaves like any other standard xpk library, so there should
  1264.  not  occur  any  problems  with  any  application  using xpk.  It requires
  1265.  CrM.library v4+.
  1266.  
  1267.     The  internal benchmarks which are displayed with the xQuery command do
  1268.  not reflect the real performance of the library.  As I don't own a A3000 i
  1269.  cannot execute them correctly.  Sorry for the inconvenience.
  1270.  
  1271.  
  1272. 4.4. The xpkCRMS.library
  1273. -------------------------
  1274.  
  1275.     This  library  is  an  xpk  interface for the CrM.library.  It uses the
  1276.  crunch  and  decrunch  routines of the LZ-Huffman mode in combination with
  1277.  the  Sample  mode  the  CrM.library  provides.   It behaves like any other
  1278.  standard  xpk  library,  so  there  should not occur any problems with any
  1279.  application  using  xpk.   It  requires  CrM.library v4+.  This library is
  1280.  quite  like  the  xpkCRM2.library,  the  only  difference  is that it uses
  1281.  additionally  the  Sample  mode.   Thus  your data is also delta encrypted
  1282.  which   may   lead   to   better   results   with   8-bit   samples.   See 
  1283.  `<-s> - Enable Sample Encoding' for more details.
  1284.  
  1285.     The  internal benchmarks which are displayed with the xQuery command do
  1286.  not reflect the real performance of the library.  As I don't own a A3000 i
  1287.  cannot execute them correctly.  Sorry for the inconvenience.
  1288.  
  1289.  
  1290. 4.5. CrMPW
  1291. -----------
  1292.  
  1293.     With this little program you can add or remove passwords to or from the
  1294.  list  the  CrM.library  keeps to decrypt data.  The use of this program is
  1295.  really  self-explanatory,  just  type  in  the  program's  name  to get an
  1296.  overview of the parameters.
  1297.  
  1298.     The  commands  are case-insensitive, but the "all" has to be in lowcase
  1299.  to clear the whole list.
  1300.  
  1301.  
  1302. 4.6. CrMData
  1303. -------------
  1304.  
  1305.     This  is  another  tiny but useful utility in the Crunch-Mania package.
  1306.  It allows to crunch and decrunch data files via the CLI.  You may also use
  1307.  it in combination with your directory utility (e.g.  DiskMaster, DirOpus).
  1308.  To  get  a  list  of  the  supported options just call CrMData without any
  1309.  parameters.   The  parameters  have  the  same result as the corresponding
  1310.  switches in the main program (CrM).
  1311.  
  1312.  
  1313.  
  1314. 5. Trivialities
  1315. ================
  1316.  
  1317.  Many Thanx may reach:
  1318.  - Commodore for this fantastic Computer with Multitasking
  1319.  - my HD for having no head-crashs anymore after trashing the v1.8 source
  1320.  - Rene for Beta-Testing
  1321.  - Michael Mutschler for Beta-Testing and detecting the Enforcer Hits
  1322.  - Karsten Weiß for telling me that my GUI is not "styleguide"-like
  1323.      and for testing the xpk sublib (now it works perfect!)
  1324.  - Alexander Ehlert for his Oberon Interface
  1325.  
  1326.  Greetinx and Handsheix fly over to:
  1327.    Michael, Rene, Tobias, Karsten, Christian, Christoph, Uli, ...
  1328.  
  1329.  
  1330.  
  1331. 6. Performance Test
  1332. ====================
  1333.  
  1334.     This  test  was  done  on  my  Amiga  500 with 7.14MHz, 512K Chip, 512K
  1335.  fake-Fast, 2M real-Fast, 105M HD, with all files being loaded from dh0:.
  1336.  
  1337.  1) "PageStream2" - Main program of Pagestream V2.2, crunched as executable
  1338.  437576 bytes, 110 Hunks, 22369 Reloc Offsets
  1339.  Using Library-Decruncher when available, Times with loading from dh0:
  1340.  
  1341.  Cruncher         Crunched Len  Crunch Time  Decrunch Time
  1342.  CrM 1.8r LZH           178848         235s            12s
  1343.  CrM 1.8t LZH           178848         352s            15s
  1344.  CrM 1.8r Normal        186932         179s            10s
  1345.  CrM 1.8t Normal        186932         303s            10s
  1346.  
  1347.  
  1348.  2) same file as in (1), but crunched as data file
  1349.  
  1350.  Cruncher         Crunched Len  Crunch Time  Decrunch Time
  1351.  CrM 1.8r LZH           211058         285s            14s
  1352.  CrM 1.8t LZH           211058         429s            18s
  1353.  CrM 1.8r Normal        230344         185s            12s
  1354.  CrM 1.8t Normal        230344         331s            12s
  1355.  
  1356.  3) "Lha.man" - Text File (Doc of Lha 1.42), 122451 bytes
  1357.  
  1358.  Cruncher         Crunched Len  Crunch Time  Decrunch Time
  1359.  CrM 1.8r LZH            36872          55s             2s
  1360.  CrM 1.8t LZH            36872          83s             3s
  1361.  CrM 1.8r Normal         42648          46s             2s
  1362.  CrM 1.8t Normal         42648          79s             2s
  1363.  
  1364.     The speed and ratio comparisons towards other packers have been removed
  1365.  to  ensure  equal  competition.  I don't want to urge people to my packer,
  1366.  they have to find out on their own which packer is the best.
  1367.  
  1368.  
  1369.  
  1370. 7. History
  1371. ===========
  1372.  
  1373.  ********** V1.3 **************
  1374.  First Release Version, with almost all Options as V1.4
  1375.  not bugfree (Crunch-Routine could produce Shit without a clear Stack)
  1376.  
  1377.  ********** V1.4 **************
  1378.  Intuition Interface added, now callable from Workbench, self-detaching,
  1379.  Req-Lib FileRequester
  1380.  some Bugs fixed (all code was totally overworked)
  1381.  
  1382.  ********** V1.5 **************
  1383.  V1.5a:    Demo Version, no Saving possible
  1384.  V1.5b:    Release Version
  1385.  Both Versions released for the Amiga '91 in Cologne!
  1386.  Crunch-Routine optimized, now 0,5-2%. better Results!
  1387.  Menu-Options "Priority" and "LED-Flash" added!
  1388.  Program sometimes crashed when you quitted it, now fixed
  1389.  V1.5c:  Auto-SetComment for run-time Data-Decruncher added
  1390.  
  1391.  ********** V1.6 **************
  1392.  Decruncher added
  1393.  User-Communication improved
  1394.  Quit-Bug finally removed
  1395.  
  1396.  ********** V1.7 ** 02-Aug-92 **********
  1397.  First Release with a free Test-Version and a Registered-Version
  1398.  New Crunchalgorithms: LZ-Huffman and Quick-LZH
  1399.  Not available in Address and Link Modes
  1400.  New Crunchmodes: Data    to crunch Datafiles easily (not via Address-Mode)
  1401.                   Switch  which detects Reloc and Data-Files and switches
  1402.                           between the Modes (only registered Version)
  1403.  Speed Improvements: Crunching takes now only half the Time! (only reg.)
  1404.  Data-Decruncer added
  1405.  Now Source and Destination Dir can be different
  1406.  Current Dir of Caller is now the CD of CrM (not df0:)
  1407.  2.0-style Intuition Interface added
  1408.  More CLI-Options (including CLI-Help)
  1409.  New Iconify-Window: shows now ToGo-Counter
  1410.  Minor Bugfixes (various Actions caused Crashes)
  1411.  RTDD now removeable, supports new crunchalgorithms
  1412.  
  1413.  ********** V1.8 ** 02-Nov-92 **********
  1414.  New Decruncher:Library, uses CrM.library
  1415.  Introducing Library: CrM.library used for executables and data files
  1416.  Registered Users get Documentation of Library! and a faster one.
  1417.  Now supports reqtools.library V38! (still uses req.library)
  1418.  Added Keyboard shortcuts
  1419.  Added Project Menu
  1420.  New Mode: Sample-mode, get better ratios with 8-Bit Samples
  1421.  New Option: Copy Icons (...)
  1422.  Now supports multiple select possibilities of file requesters
  1423.  Whole directories may now be crunched
  1424.  Some changes made to the appearance (Logo, bigger Gads, ...)
  1425.  
  1426.  
  1427.                ********** CrM V1.9 ** 08-Oct-93 **********
  1428.  
  1429.  - Yes! After almost one year another version...
  1430.  
  1431.  - new GUI: now uses gadtools.library, on Kick1.2/1.3 gadtools13.library is
  1432.    used!
  1433.  
  1434.  - removed possibility to open a window on the wb
  1435.  
  1436.  - removed  support  of req.library, as there is no new version supporting
  1437.    the 2.0-Look
  1438.  
  1439.  - new Decruncher: LZH-Algo now also available in Address and Link modes
  1440.  
  1441.  - added History for Textoutput (only Kick2.0+) (default: 100 Lines)
  1442.  
  1443.  - added  Percentage Display while crunching, in the main window it's also
  1444.    graphical, in the iconify window there is only text.  Ffirst to suggest
  1445.    this was Michael
  1446.  
  1447.  - completely  rewrote  support  for  filerequester, I hope it won't crash
  1448.    anymore.   With  multiselect you can now also select dirs, unfortunally
  1449.    this doesn't work with mfr (at least it doesn't with my version).
  1450.  
  1451.  - when  packing entire directories or using the multiselect feature of the
  1452.    filerequester  a complete filelist is created before crunching any file.
  1453.    Now  Source  and  destination  dirs  may be the same without the risk of
  1454.    confusing dos.
  1455.  
  1456.  - memory  display now uses the correct colors on Kick3.0, thanx to Uli who
  1457.    detected this bug and helped me to remove it.
  1458.  
  1459.  - added menu  : Project / Save Prefs
  1460.  - added menu  : Options / Encrypt Data
  1461.  - added menu  : Options / Auto Makedir
  1462.  - added menu  : Options / Include Subdirs
  1463.  - added menu  : Options / Text Buffer
  1464.  - removed menu: Options / Req.library, as CrM no longer supports this lib
  1465.  
  1466.  - "Copy Icons" still not included, sorry! (menu removed)
  1467.  
  1468.  - improved user communication.  The display field displays now all actions
  1469.    the user has done and looks like a real logfile.
  1470.  
  1471.  - Reloc/Normal  Decruncher/Kill  Decruncher=Yes  would  let the decruncher
  1472.    crash always.  fixed.
  1473.  
  1474.  - CrM uses and needs now CrM.library V4+
  1475.  
  1476.  - removed some enforcer hits.
  1477.  
  1478.  
  1479.  CrM.library v4:
  1480.  ----------------
  1481.  - added  crunching  algorithms  and  possibility  to  encrypt  data with a
  1482.    password
  1483.  
  1484.  - when  you  enter a password to decrunch some data this pw is stored in a
  1485.    list so you have to enter this pw only once per reset.
  1486.  
  1487.  - speeded up decrunch routines. Optimisation ideas by Fabien Letouzey!
  1488.  
  1489.  - new functions: cmProcessPW(), cmCryptData(), cmProcessCrunchStruct() and
  1490.    cmCrunchData(). See Autodocs for details.
  1491.  
  1492.  
  1493.  xpkCRM2.library:
  1494.  -----------------
  1495.  - xpk sublibrary using CrM.library v4+
  1496.  
  1497.  - uses LZ-Huffman algorithm
  1498.  
  1499.  - first release version
  1500.  
  1501.  
  1502.  CrMPW v1.0:
  1503.  ------------
  1504.  - small  tool  to add/remove pws to/from the library internal list without
  1505.    using the reqtools.library (affects only decryption)
  1506.  
  1507.  - provided as assembler example source
  1508.  
  1509.  - first release version
  1510.  
  1511.  
  1512.  CrMData v1.0:
  1513.  --------------
  1514.  - small command line version of CrM to crunch/decrunch data files.
  1515.  
  1516.  - supports all algorithms and modes: LZH, Normal, Sample, Password
  1517.  
  1518.  - provided as assembler example source
  1519.  
  1520.  - first release version
  1521.  
  1522.  
  1523.  RTDD v1.9:
  1524.  -----------
  1525.  - now  additionally  patches  ExAll(), OpenFromLock() and ExamineFH() on a
  1526.    system with Kick2.0+
  1527.  
  1528.  - now uses and needs CrM.library (no special version required)
  1529.  
  1530.  - supports  encrypted data:  it automatically asks for the pw and decrypts
  1531.    the data.
  1532.  
  1533.  - new command line parameters: -i: Install Only
  1534.                                 -r: Remove Only (useful for scripts)
  1535.  
  1536.  
  1537.                ********** CrM V1.91 ** 11-Feb-94 **********
  1538.  
  1539.  - A Null message at CrM's messageport caused some Enforcerhits. They
  1540.    occured when you tried to scroll the output field down. Fixed.
  1541.  
  1542.  - When  you  wanted  to  quit  from the Iconify window  and you denied the
  1543.    requester, CrM would crash.  Fixed.
  1544.  
  1545.  - CrM caused some Enforcerhits when run from workbench.  Fixed.
  1546.  
  1547.  - CrM crashed very often when you returned from the Iconify window. Fixed.
  1548.  
  1549.  - This document is now also available in the amigaguide format.
  1550.  
  1551.  - Overworked menus: multiple selection (right and left mousebutton) is now
  1552.    possible, Quit shortcut now really only works in combination with SHIFT and
  1553.    the Project menu was reorganized.
  1554.  
  1555.  - CrM crashed when trying to open a filerequester and reqtools being
  1556.    disabled. Fixed.
  1557.  
  1558.  - Kicked out "Quick-LZH" mode (actually it was already kicked in V1.8, but it
  1559.    was still in the cycle gadget)
  1560.  
  1561.  - Changed Task Names to "CrM V1.91 GUI Task.1" and "CrM V1.91 Action Task.1"
  1562.  
  1563.  - Load/Save/Crunch menus are now also ghosted like the corresponding gadgets.
  1564.  
  1565.  
  1566.  CrM.library V4.2:
  1567.  ------------------
  1568.  - The BSS segment in combined Data/BSS or Code/BSS hunks was not cleared
  1569.    properly. Thus some programs (e.g. Term) crashed. Fixed.
  1570.  
  1571.  - Added Oberon interface for this library. Thanx to Alexander Ehlert!
  1572.  
  1573.  - A mungwall hit frequently occured when crunching in LZH mode, one byte
  1574.    outside the allocated buffer was used. Fixed.
  1575.  
  1576.  
  1577.  RTDD V2.0:
  1578.  -----------
  1579.  - RTDD is now a commodity and works only with KS2.0+.
  1580.  
  1581.  - You can now deactivate RTDD without removing the patches (sometimes you
  1582.    couldn't remove them because another program had also patched some DOS
  1583.    functions).
  1584.  
  1585.  
  1586.  CrMData V1.01:
  1587.  ---------------
  1588.  - CrMData crashed when the gain was negative. Fixed.
  1589.  
  1590.  - new option -l: CrMData now defaultly skips files which become longer
  1591.    when being crunched. With "-l" these files may be saved.
  1592.  
  1593.  
  1594.  xpkCRMS.library V1.1:
  1595.  ----------------------
  1596.  - xpk sublibrary using CrM.library v4+
  1597.  
  1598.  - uses LZ-Huffman algorithm plus Sample Mode (delta encryption)
  1599.  
  1600.  - first release version
  1601.  
  1602.  
  1603.  ·  ·   -  - -- --- --=- -=-=- -===- -=- -===- -=-=- -=-- --- -- -  -  ·  ·
  1604.  
  1605.  If you find any shit or nonsense above this line please tell me.  This may
  1606.  occur  as  I  don't  read  the  complete manual each time a new version is
  1607.  released, and as I am really too lazy to care about that...
  1608.  
  1609.  Finito - May the Force be with you!!!
  1610.  
  1611.                                        //
  1612.                            :-)        //    (-:
  1613.                                   \\ //
  1614.                                    \X/
  1615.